package LeetCode.t14;

/**
 * @author: Laity
 * @Project: JavaLaity
 * @Package: LeetCode.t14.longestCommonPrefix
 * @Date: 2022年11月11日 20:02
 * @Description: LeetCode第14题：最长公共前缀
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * 如果不存在公共前缀，返回空字符串 ""。
 */
public class LongestCommonPrefix {
    public static String longestCommonPrefix(String[] strs) {

        if (strs.length == 0 && strs == null) {
            return "";
        }

        int count = strs.length;  // 数组中元素个数
        int length = strs[0].length();  // 第一个元素长度  flask
        // 遍历字符
        for (int i = 0; i < length; i++) {
            char c = strs[0].charAt(i);  // f l a s k
            // 遍历count，第一个已取出，所以从1开始计数 flower
            for (int j = 1; j < count; j++) {
                // i == strs[j].length() 说明： strs[0].length(); > strs[j].length()
                // strs[j].charAt(i) != c 说明：strs[0]与strs[j]前多少多少位相同，但到现在这个位置出现差异了
                if (i == strs[j].length() || strs[j].charAt(i) != c) {
                    // 返回 上一次值的位置
                    return strs[0].substring(0, i);
                }
            }
        }
        return strs[0];
    }

    public static String longestCommonPrefix2(String[] strs) {
        // 判空
        if (strs.length == 0 || strs == null) {
            return "";
        }
        // 伪代码：获取所有的可能性，strs[0] flask 拆解 -> f、fl、fla、flas、flask
        // 遍历 分析的可能性，同时遍历strs的参数内容和当初拆解的长度为一致的字符串
        // 遇到不相同的就return，遍历可能性的时候把当前可能的直接模拟最终值
        return "";
    }

    public static void main(String[] args) {
        String[] strs = new String[]{"flask", "flower", "flow", "django"};
        System.out.println(longestCommonPrefix(strs));
    }
}
